package com.jiangyao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jiangyao.model.dto.backend.ClassUserScoreEditDTO;
import com.jiangyao.model.dto.backend.ClassUserScoreListPageDTO;
import com.jiangyao.model.dto.backend.ClassUserScoreSemesterListDTO;
import com.jiangyao.model.dto.backend.ClassUserScoreSemesterQueryDTO;
import com.jiangyao.model.entity.ClassUserScore;
import com.jiangyao.model.vo.backend.ClassUserScoreListVO;
import com.jiangyao.model.vo.backend.ClassUserScoreSemesterListVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 学员学分信息 服务类
 * </p>
 *
 * @author xiangyan
 * @since 2020-08-16
 */
public interface ClassUserScoreService extends IService<ClassUserScore> {

	/**
	 * 获取专业成绩学期课程列表
	 *
	 * @param listDTO 请求参数DTO
	 * @return 结果
	 */
	List<ClassUserScoreSemesterListVO> getSemesterList(ClassUserScoreSemesterQueryDTO listDTO);

	/**
	 * 新建编辑专业成绩学期课程
	 *
	 * @param listDTO 请求参数DTO
	 */
	void updateSemesterList(ClassUserScoreSemesterListDTO listDTO);

	/**
	 * 删除专业成绩学期课程
	 *
	 * @param delDTO 删除DTO
	 */
	void deleteSemesterList(ClassUserScoreSemesterQueryDTO delDTO);

	/**
	 * 下载成绩导入模板
	 *
	 * @param response response
	 * @param dtoJson  班级成员成绩学分DTO json字符串
	 */
	void downloadImportTemplate(HttpServletResponse response, String dtoJson);

	/**
	 * 导入成绩
	 *
	 * @param file 上传的文件
	 */
	void importScore(MultipartFile file);

	/**
	 * 获取班级成员专业成绩列表
	 *
	 * @param listPageDTO 列表DTO
	 * @return 结果
	 */
	Page<ClassUserScoreListVO> getListPage(ClassUserScoreListPageDTO listPageDTO);

	/**
	 * 导出班级成员专业成绩列表
	 *
	 * @param response    response
	 * @param listPageDTO 列表请求DTO json字te符串
	 */
	void export(HttpServletResponse response, ClassUserScoreListPageDTO listPageDTO);

	/**
	 * 编辑成员专业成绩
	 *
	 * @param editDTO 编辑DTO
	 */
	void editUserScore(ClassUserScoreEditDTO editDTO);

	/**
	 * 获取专业成绩学期课程详情
	 *
	 * @param listDTO 请求参数DTO
	 * @return 结果
	 */
	ClassUserScoreSemesterListVO getSemesterDetail(ClassUserScoreSemesterQueryDTO listDTO);
}
